Method, system, and computer program product for route quality checking and management

ABSTRACT

A method, system and computer program product for route checking and management is described herein. In a voice over internet protocol environment, the invention allows for the testing of routes among various gateways. In an embodiment, a method for selecting a route for a voice over IP call within a communications network is provided. The method includes receiving a VoIP call request from a user, identifying potential candidate routes, assessing the quality and cost of routes and determining a route based on cost, quality and/or user preferences.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. application Ser. No.09/660,920, filed Sep. 13, 2000, which is hereby incorporated herein inits entirety.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The invention relates generally to the field of voice over Internetprotocol technology. More particularly, the invention relates to routetesting and selection over packet-switched networks.

2. Related Art

Voice over Internet protocol (VoIP) communications services providetelephony services over packet-switched networks, like the Internet. Inorder to maintain call quality, VoIP services are concerned with routequality. High route quality makes for more reliable and clearerconversations. Route checking and selection over the packet switchednetwork (like the Internet) is necessary to ensure quality of service.

Unlike typical data, voice data is extremely time dependent.Transmission delays and variations in the transmission rate alter thevoice data received by the destination.

In a packet-switched network, latency and jitter are measurablequalities of network performance. Latency is the amount of time it takesa packet to reach its destination. Jitter is the variation in latency.The route is the path in the network from the origin of a packet orpackets to their destination. A route can be a direct end-to-endconnection path, or it can consist of a path linked by any number ofrouters, switches, gateways, gatekeepers, etc.

Latency and jitter can degrade the communication path between any twopoints on a packet-switched network, like the Internet. In a VoIPenvironment, latency will be perceived by the end users as a delay inthe response of the remote site (or other user). Furthermore, jitter isthe variation in latency from one packet to another which can beperceived as a stammering in the conversation.

Latency and jitter each impact communication differently. For example,if packets always arrived 50 milliseconds (ms) after being transmitted,then there would be a 50 ms latency and no jitter. In another example,however, if packet # 1 arrived 100 ms after transmission, packet # 2arrived 50 ms after transmission, and packet # 3 arrived 150 ms aftertransmission, there would be an average jitter of +/−33 ms. In VoIPapplications, jitter is often more critical than latency. Jitter cancause a packet to arrive too late to be useful. The effect is that thepacket may be delayed enough that the end user will hear a pause in thevoice that is talking to them, which is very unnatural if it occursduring the middle of a word or sentence.

Jitter typically occurs when the network utilization is too high, andpackets are being queued by gateways, switches, routers or other similardevices, causing delivery times to become unpredictable. The Internet,because of its complex structure, is often subject to varying degrees ofjitter. Jitter variation can occur at different locations and atdifferent times depending upon network traffic and other conditions.

Conventional techniques can calculate the jitter and latency present ina route. Some VoIP systems can select routes based on the lowest jitterand/or latency. Other systems can include management of the routeselection process in response to network conditions.

However, these techniques are not conducive to rapidly changing networkconditions and do not provide real-time route checking and selection.Additionally, these techniques do not take into account the costs ofswitching from the packet switched network to the public switchedtelephone network (PSTN) in order to maintain quality of service.

Furthermore, conventional systems do not allow calling parties to makeroute selections on a per call basis.

Still further, conventional systems do not allow users to supply theirown criteria used in the checking and selection of routes.

Therefore, in view of the above, what is needed is a system, method andcomputer program product for route quality checking and management.Further, what is needed is a system, method and computer program productthat can test and score routes on a network based on criteria providedby a user. Such a system would provide the optimal route for a callbased on the provided criteria. Furthermore, what is needed is a system,method and computer program product that enables users to access theroute quality checking and management system and provide individual orgroup routing preferences and/or other route information so that thesystem can select the proper route for that individual or group.

SUMMARY OF THE INVENTION

The invention is directed to a system, method and computer programproduct for a route quality checking and management system thatsatisfies the above-stated needs. The method of the present inventioninvolves a routing manager or a route management module implemented at agateway for determining which other gateways are available to it. Agateway can be any server enabled for routing voice data packets. Themethod involves the gateway determining the candidate routes to theother gateways, testing those candidate routes, determining candidateroute statistics, scoring each candidate route tested, prioritizing eachscored route and storing this priority and score information. In oneembodiment, a routing manager on a gateway tests the routes to othergateways so that it can use the proper routes based on the preferencesof users.

The method of the invention for checking a network route includes arouting manager determining a gateway available for routing, where thegateway is capable of responding to a request on the communicationsnetwork. The routing manager determines a candidate route to thegateway, where the candidate route is within the communications network.

A routing manager tests the candidate route to a gateway using qualitymeasurement packets, where the quality measurement packets include routeinformation. From the route information, the routing manager determinesroute statistics, where the route statistics are based on routinginformation contained within said quality measurement packets. Therouting manager score the candidate route based on the route statistics.

In an embodiment, the method of the invention is implemented in acommunications network that includes a packet-switched network, such asframe relay or the Internet. Furthermore, in other embodiments, themethod of the invention is implemented in a communications network thatincludes a public switched telephone network (PSTN) or a combination ofa PSTN and a packet-switched network.

The route information utilized by the invention includes the latency,time jitter, and lost packet information.

In an embodiment, the method of the invention includes functionality forthe routing manager to prioritize the candidate route among other testedroutes based on the score obtained for that candidate route. In otherembodiments, the routing manager has access to a database for storingscore information related to the candidate route(s) for use in routeselection.

In one embodiment, the testing functions of the method of the inventioninclude configuring the parameters for quality measurement packets to besent to a gateway where the parameters include the packet interval,packet length, number of packets, and time limit. The routing managerincludes a graphical user interface (GUI) for configuring theseparameters.

Additionally, the routing manager includes a GUI for configuring thescoring table of the invention. Thus, the routing manager configures thescoring table for use in scoring candidate routes where the tableincludes a quality score, packet loss, average delay, and averagejitter. In other embodiments, the routing manager includes a GUI forconfiguring the route ordering applied for a gateway, where the routeordering includes file logging information, quality of servicethreshold, and timeout amount.

According to embodiments of the invention, the routing manager forwardsquality measurement packets to a gateway, where the quality measurementpackets include routing information; and the routing manager receivesreturned quality measurement packets from a gateway, where the returnedquality measurement packets include routing information.

The system and computer program product of the present inventionincludes a routing manager within a gateway coupled to both a network,such as the Internet, and the PSTN, via a local exchange, through whichusers can access the gateway either over the network or from a deviceconnected to the local exchange. In one embodiment, the system containsnumerous modules operating either in a redundant or distributed manner,as well as in a serial or parallel manner. In another embodiment, thegateway includes a database to store information collected by therouting manager.

In one embodiment of the invention, a gateway is located in a differentlocal exchange from other gateways to provide access to specificgeographical locations from the network. In another embodiment, morethan one gateway can be connected to any given local exchange. In thisembodiment, other gateways can prioritize route selection based on theutilization of any one of the gateways located in a given localexchange.

The computer program product of the present invention further includes agraphical user interface (GUI) for entering the specific criteria usedby the method of the present invention for checking and selectingroutes.

The method of the present invention includes a route testing routine. Inone embodiment, the testing routine configures packet parameter(s),configures a scoring table, and configures a route order. The method ofthe present invention includes a testing routine where test packet(s)are sent and received for scoring and determination of route quality.

The route checking and management system supplies route information thatdescribes the route. Furthermore, the route checking and managementsystem includes the functionality, in hardware or software or acombination of hardware and software, for performing the methodsdescribed herein.

While the invention is described in terms of the above embodiments, thisis for convenience only and is not intended to limit its application. Infact, after reading the following description, it will be apparent toone skilled in the relevant art(s), based on the teachings herein, howto implement the invention in alternative embodiments (e.g., usinggateways in neighboring local exchanges, and/or stacking gateways in asingle local exchange).

Furthermore, while the following description refers to the globalInternet, it is not intended to limit the application of the invention.It will be apparent to one skilled in the relevant art how to implementthe following invention, in any computer network, combination ofnetworks or other alternative embodiments. For example, other Voice overPacket (VoP) networks include frame relay and asynchronous transfer mode(ATM) enabled networks.

One advantage of the invention is that a user can select the routes toother gateways to be tested.

Another advantage of the invention is that a user can select thecriteria applied to candidate routes so that the proper route isselected.

Yet another advantage of the invention is that the system can testroutes as the call is being placed and select the best route for thatparticular call. Furthermore, a user attempting to place a call wherethe level of quality is below a determined level can have the callrouted to the nearest gateway with an acceptable level of quality.

Further features and advantages of the invention as well as thestructure and operation of various embodiments of the invention aredescribed in detail below with reference to the accompanying drawings.

BRIEF DESCRIPTION OF THE FIGURES

The accompanying drawings, which are incorporated herein and form a partof the specification, illustrate the invention and, together with thedescription, further serve to explain the principles of the inventionand to enable a person skilled in the pertinent art to make and use theinvention.

In the drawings:

FIG. 1 is a block diagram showing an example system architecture,according to an embodiment of the invention, showing networkconnectivity among various components;

FIG. 2 is a block diagram showing an alternative example systemarchitecture, according to an embodiment of the invention, showingnetwork connectivity among the various components;

FIG. 3 is a block diagram showing a gateway that includes a routingmanager, according to an embodiment of the invention;

FIG. 4 is a flowchart illustrating a routine for determining routequality according to an embodiment of the invention;

FIG. 5 is a flowchart illustrating a routine for candidate route testingaccording to an embodiment of the invention;

FIG. 6 is an exemplary route testing configuration screen according toan embodiment of the invention;

FIG. 7 is an exemplary route scoring configuration screen according toan embodiment of the invention; and

FIG. 8 is an example computer system in one example implementation ofthe present invention.

The invention will now be described with reference to the accompanyingdrawings. In the drawings, like reference numbers indicate identical orfunctionally similar elements. Additionally, the left-most digit(s) of areference number identifies the drawing in which the reference numberfirst appears.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

In summary, the routing manager of the invention connects to othermodules of the gateway to access information about other gateways andcandidate routes to those gateways. In an alternative embodiment, therouting manager is able to perform tracing operations to determine thecandidate routes to gateways. Once candidate routes are obtained, therouting manager tests the routes to determine their quality of service.

Candidate routes are assigned scores (also known as a level). Therouting manager can be pre-set with various levels. Additionally, therouting manager can be pre-set with route ordering levels whichprioritize the various aspects of a route. These aspects can include thelevel assigned to a tested route, but this is optional. In otherembodiments, aspects include the address of the destination gateway, thecost involved to route to that gateway, etc.

In an embodiment, the routing manager provides the ordered routes beforea user places a call. In another embodiment, the routing manager isconfigured to test candidate routes to a desination gateway whenever auser requests a connection to a call that may utilize that destinationgateway.

In brief, a user of the invention is a caller known to the VoIP system.When the system receives a call request from the user, the systemaccesses user specific information (route ordering) and the destinationaddress (i.e., the number being called/requested) to determine thecandidate routes to use in connecting the call. The system tests thecandidate routes to ensure call quality. The system may use routequality statistics, along with user specific information, to determinethe proper route. These and additional embodiments and examples of theinvention are now discussed in greater detail.

FIG. 1 is a block diagram showing an example VoIP system 100, accordingto an embodiment of the invention, showing the network connectivityamong the various components. It should be understood that theparticular example VoIP system 100 in FIG. 1 is shown for illustrativepurposes only and does not limit the invention.

The VoIP system 100 includes a network 102 which connects gateways 104,106, and 108. Network 102 is a packet-switched network capable ofserving as an intranet, internet, and/or connecting to the globalInternet. Gateways 104, 106, and 108 can be physically located anywherethat allows connectivity with network 102.

Each of gateways 104, 106, and 108 are connected to a local exchange. Asshown in FIG. 1, gateway 102 is connected to local exchange 110; gateway106 is connected to local exchange 112; gateway 108 is connected tolocal exchange 114.

Local exchanges 110, 112, and 114 are each connected to the PSTN.

Telephones 116, 118, and 120 are each connected to a local exchange.Telephone 116 is connected to local exchange 110. Telephone 118 isconnected to local exchange 112. Telephone 120 is connected to localexchange 114.

Telephones 116, 118, and 120 are representative of any number oftelephones connected to a given local exchange. Typically, calls withina local exchange are toll-free or “local” calls. Calls from a telephonein one local exchange to a telephone in another local exchange aretypically considered toll calls or long distance calls.

FIG. 2 is a block diagram showing an example VoIP system 200, accordingto an alternative embodiment of the invention, showing the networkconnectivity among the various components. It should be understood thatthe particular example VoIP system 200 in FIG. 2 is shown forillustrative purposes only and does not limit the invention.

VoIP system 200 has substantially similar components to VoIP system 100.VoIP system 200 differs from VoIP system 100 in that gateways 204 and206 are connected to the same local exchange, local exchange 210. Thepurpose of illustrating this difference is to illustrate a feature ofembodiments of the invention. It is a feature of the invention thatrouting decisions can take into account the physical locations of localexchanges when determining the route to use when placing a call over theVoIP systems of the invention.

Referring to FIG. 3, a block diagram 300, according to an embodiment ofthe invention, is shown.

Block diagram 300 shows a network 302 connected to gateway 304. Gateway304 contains routing manager 306, control logic 308, and database 310.Routing manager 306 provides route checking and selection routines asdescribed herein. Routing manager 306 can be implemented in hardware orsoftware or some combination of hardware and software. Control logic 308provides additional functionality for voice coding and decoding, userlogging, and other VoIP features. Database 310 stores, among otherthings, the results of route tests, route checking parameters, and routeinformation as described herein. Database 310 can store additionalinstructions for routing manager 306 to perform.

Referring to FIG. 4, a flowchart 400 of routine for determining routequality, according to an embodiment of the invention, is shown.

In step 402, the routing manager 306 determines which other gateways areavailable to route calls. In one embodiment, routing manager 306 canobtain this information from database 310. In another embodiment, aseparate routing server (not shown) can provide information aboutavailable gateways. The database 310 and routing server are described indetail in a commonly-owned U.S. patent application Ser. No. 09/527,920,entitled “Method, System, and Computer Program Product for ManagingRouting Servers and Services,” incorporated herein by reference in itsentirety.

In step 404, the routing manager 306 determines the candidate route(s)to the gateways that were determined in step 402. In one embodiment,candidate route(s) are determined by a tracing operation whichdetermines the physical network route to a gateway. In anotherembodiment, database 310 provides one or more candidate route(s) foreach gateway from each other gateway. Candidate routes can includetransitions from network 102 to the PSTN via a local exchange, such aslocal exchange 112. In one embodiment, routing manager 306 determinesthe availability of candidate routes to each of gateways 204, 206, and208.

In step 406, the routing manager 306 tests the candidate route(s) to thegateways. An embodiment of step 406 is discussed further detail in FIG.5. In an embodiment, routing manager 306 is able to determineinformation about each gateway tested, such as, but not limited to, thelocal exchange of each gateway, and services supported by each gateway.

In step 408, the routing manager 306 determines the candidate routestatistics based on the information returned in testing step 406. Forexample, routing manager 306 determines the latency between its gatewayand the other tested gateways. Additional details and embodiments arediscussed with respect to FIG. 5.

In step 410, the routing manager 306 scores the candidate route(s) basedon the statistics determined in step 408. In one embodiment, the routingmanager 306 scores candidate route(s) based on both the statisticsdetermined in step 408 and stored information from previous tests. Inanother embodiment, routing manager 306 scores routes based on anaveraging of the statistics either determined or stored or a combinationof both.

In step 412, the routing manager 306 prioritizes candidate routes basedon their score and the requirements of user. In one embodiment, thecandidate routes are prioritized at the time a user places a call thatutilizes a gateway.

In one embodiment, a user can prioritize routes for overall voicequality. For example, in FIG. 2, a user can select criteria which allowsthe system to select routes in conformance to those criteria. Forinstance, in the case for high voice quality, routes are selected whichmeet high voice quality standards, and where such network routes areunavailable, the PSTN routes are substituted. This routing can be moreexpensive than routing entirely on network 102 because the PSTN isaccessed whenever voice quality would suffer, but such alternate routingis possible because the user is able to select and prioritize thecriteria for their call.

In an further embodiment, gateway 104 may be in Albany, N.Y.; gateway108 may be in Manhattan, N.Y.; and gateway 106 may be in Chicago, Ill.If the user is calling from a local exchange with an orginating gatewayin London, England, then the least expensive call to Chicago, Ill. isover network 102 to gateway 106. However, if the call quality is below apreset level, then the call is routed alternatively. If routing togateway 104 provides high enough call quality, then the remainder of thecall is routed over the PSTN to local exchange 112 via local exchange110. Therefore, while some PSTN costs may be incurred, the overall costsare still much lower than calling directly from London to Chicago overthe PSTN. Furthermore, voice quality is maintained.

In an alterative embodiment, gateways may be connected to the same localexchange as other gateways, as shown in FIG. 2. Thus, voice quality canbe maintained without increases in cost by routing to an alternativegateway in the same local exchange. This embodiment has a furtheradvantage of allowing for network traffic management.

In step 414, the routing manager 306 stores the priority and scoreinformation. In an embodiment, this information is stored in database310.

Referring to FIG. 5, a flowchart 500 of routine for testing candidateroutes, according to an embodiment of the invention, is shown.

In step 502, the routing manager 306 configures the packet parameters.In one embodiment, packets can be set to specific size. Packets can alsobe sent in groups (numbers of packets). Further, packets can bescheduled to be sent prior to a call or they can be scheduled at regularintervals.

In step 504, the routing manager 306 configures a scoring table. In oneembodiment, a scoring table consists of heirarchical levels assigned tospecific values for the parameters being tested. An example scoringtable is shown in FIG. 7 as score table panel 708. The results (latency,jitter, etc.) of the candidate route testing (see below) are thencompared to the values assigned to the levels of the scoring table.Candidate routes are assigned a score based on the level that matchestheir results.

In step 506, the routing manager 306 configures the route ordering. Eachroute is assigned a level (or score) in step 504. The route ordering isdetermined by user set values, which order or prioritize routes based onfactors that include a route's level. In one embodiment, the system canorder the routes based on their network address (IP address), costestimate (the estimated cost for using the route), preference (generaluser preference), quality of service (the route's score), and staticroutes (whether the route is static or unchanging and therefore likelyto be more reliable).

While the actual scoring and ordering of routes occurs after the testingsteps of testing step 406, the levels of routes and route level orderingcan be determined prior to actual testing.

In step 508, the routing manager 306 sends test packet(s). In oneembodiment, the routing manager 306 first creates a user datagramprotocol (UDP) socket used for sending and receiving quality measurementpackets; then automatically responds to requests on the socket withoutany delay; and finally sends messages to the corresponding socket onother gateways to measure the quality of server to those other gateways.In the above-described step UDP packets are used. However, as oneskilled in the relevant art will recognize other protocols can be used(for example, TCP).

In step 510, the routing manager 306 receives returned test packet(s).In an embodiment, the destination gateways receive a quality measurementpacket from another gateway and return a packet back to the originatinggateway as soon as possible. The returned packet includes informationabout the packet that was received by the destination gateway.

As described above, the routing manager 306 measures the returnedpackets and determines a score for the route(s).

Measurement and Scoring Embodiments

In embodiments, the measurement and scoring processes of the inventioninclude determining the packet trip time of candidate route, calculatingthe average variation in the trip time of a measurement packet, anddetermining the packet loss by counting the number of packets that werenot returned. For example, table 1 shows example results from theabove-described testing process. From these results shown in Table 1,the average delay, average jitter, and packet loss can be calculated, asshown for one candidate route in table 2 below for the three packetsshown in table 1. TABLE 1 Send Receive Pkt Time Time Delay Jitter N x Yy − x |(y − x) − (y − x)ave| 1  0 ms  45 ms 45 ms 0 ms 2  60 ms 110 ms50 ms 5 ms 3 120 ms 160 ms 40 ms 5 ms

TABLE 2 Average Average Packet Delay Jitter Loss 45 ms 3 ms 0%

The packet loss percentage becomes more important even at low levels.Five (5) per-cent packet loss may be entirely unacceptable to a user.These figures can be used to score a candidate route as in step 410 byassigning a score to the route based on the results of the tests shownabove. In this way, the invention can automatically select the properroute for a call.

Furthermore, as one skilled in the relevant art(s) based on theteachings described herein would recognize, these embodiments can beimplemented with any of the methods discussed herein, where the routingmanager of the invention is determining and/or testing candidate routes.

The above-mentioned figures are exemplary illustrations of features ofthe present invention and are not intended to limit the presentinvention in any way. All the embodiments described herein can becombined with each other to form alternative processes of using theinvention. Specifically, several features of the invention can beimplemented in combination with other features of the invention to formfurther embodiments. For example, steps 508 and 510 of FIG. 5 can berepeated for each call received by the gateway 304, while the othersteps shown in FIG. 5 would only be performed if the particular userrequired a modification.

Graphical User Interface

In one embodiment of the invention, the routing manager 306 providesinput (GUI) screens. The gateway 304 (as shown in FIG. 3) allows usersto view and add configuration information for routing manager 306.

As will be apparent to one skilled in the relevant art(s), the GUIallows users of routing manager 306 to specify all inputs (e.g., generalsettings, route ordering, and routing servers) and options (e.g., packetsettings, and scoring tables) described herein.

FIGS. 6, and 7 show example interface screens of the present invention.

These screens are exemplary and for illustrative purposes only, as thepresent invention is sufficiently flexible to allow different screendesigns. It should be noted that the particular information appearing ininput screens of the routing manager 306, result from the informationentered by the user. Thus, it will be apparent to one skilled in therelevant art(s) that the configuration defined in steps 502, 504, and506 utilize the information that will be entered in the screens duringoperation of the routing manager 306.

Referring to FIG. 6, a routing configuration screen 602 for entering andmodifying routing manager 306 settings is shown.

Screen 602 includes a general settings panel 604, a route ordering panel608, and a routing servers panel 612.

General settings panel 604 includes a change settings link 606 to add,modify, and/or delete the settings displayed in general settings panel604. As shown in FIG. 6, some settings are cache timeout in seconds,dynamic routing usage, error log file name, quality of servicethreshold, and quality checking usage. Cache timeout refers to theamount of time (here set to 86,400 seconds or 24 hours) that the cacheof stored candidate route scores are stored. In other words, accordingto one embodiment, each candidate route is tested once every 24 hoursand given a new score. Dynamic routing usage refers to the use ofalternative routes obtains dynamically from other gateways, as describedin detail in a previously cited, commonly-owned U.S. patent applicationSer. No. 09/527,920 incorporated herein by reference in its entirety.Error log file provides the name of a file to which error or conditionmessages may be saved. Quality of service threshold refers to theminimum value that a route can have and still be stored for use by thesystem of the invention. Quality checking usage refers to enabling theuse of route quality checking. For example, according to embodiments ofthe invention, route testing can be disabled, and route ordering willstill take place, albeit without the benefit of quality of serviceinformation. These settings can be altered to activate or deactivate theusage of route quality checking. Additionally, a quality of servicethreshold can be set to determine when route quality checking should beactivated automatically.

Route ordering panel 608 includes a change link 610 to add, modify,and/or delete the settings displayed in route ordering panel 608. Asshown in FIG. 6, some settings are address (i.e., domain name or IPaddress), cost estimate, preference, quality of service, and staticroutes (truncated in the panel's window). In this way, a user canprioritize the parameters with which routes are selected. In a broadapplication, cost estimate can be highly prioritized to limit the rangeof routes includes in subsequent selections. Quality of service can besimilarly applied.

Routing servers panel 612 includes listings window 614, an add link 616,a properties link 618 and a remove link 620. Listings window 614presents the entered servers and their status. In one embodiment, theseservers are used to provide candidate routes for testing. Add link 616allows a user to add additional servers. Properties link 618 allows auser to configure the properties of a server displayed in listingswindow 614. Remove link 620 deleted a server from listings window 614.

Referring to FIG. 7, a quality testing configuration screen 702 forentering and modifying routing manager 306 settings is shown.

Screen 702 includes quality checking configuration panel 704, and scoretable panel 708.

Quality checking configuration panel 704 includes a change setting link706 for modifying the packet parameters shown in panel 704. Packetparameters include, but are not limited to those shown, such as packetinterval, which is the rate at which packets are sent, packet length,the number of packets, and the time limit over which packets are to besent.

Score table panel 708 includes listings window 710, add top link 712,add after link 714, delete link 716, and modify link 718. Links 712,714, 716, and 718 allow a user to maintain, update and reset the scoringlevels shown in listings window 710. Specifically, add top link 712allows a user to add a score level to the top of the list of scorelevels. Similarly, add after link 714 allows a user to add a score levelbelow a selected score level. In an embodiment, the scoring table isread from top to bottom and levels assigned to candidate routes based onthe first conforming score level.

Listings windows 710 displays the parameters used to score routes. Asshown in FIG. 7, these can include average delay, average jitter, packetloss, and quality score (some partially truncated). The average delay,average jitter, and packet loss are determined by the testing methodsdisclosed herein. For each user defined level of average delay, averagejitter and packet loss is also assigned a quality score. The qualityscore is assigned to a route that is scored as having met the othercriteria entered in listings window 710.

Description of the example screens in these terms is provided forconvenience only. It is not intended that the invention be limited toapplication in these example screens. In fact, after reading thedescription contained herein, it will become apparent to a personskilled in the relevant art(s) how to implement the invention withalternative screens.

Example Computer System

An example of a computer system 840 is shown in FIG. 8. The computersystem 840 represents any single or multi-processor computer. Inconjunction, single-threaded and multi-threaded applications can beused. Unified or distributed memory systems can be used.

Computer system 840 includes one or more processors, such as processor844. One or more processors 844 can execute software implementingroutines 300, and 400 as described above. Each processor 844 isconnected to a communication infrastructure 842 (e.g., a communicationsbus, cross-bar, or network). Various software embodiments are describedin terms of this exemplary computer system. After reading thisdescription, it will become apparent to a person skilled in the relevantart how to implement the invention using other computer systems and/orcomputer architectures.

Computer system 840 can include a display interface 802 that forwardsgraphics, text, and other data from the communication infrastructure 842(or from a frame buffer not shown) for display on the display unit 830.

Computer system 840 also includes a main memory 846, preferably randomaccess memory (RAM), and can also include a secondary memory 848. Thesecondary memory 848 can include, for example, a hard disk drive 850and/or a removable storage drive 852, representing a floppy disk drive,a magnetic tape drive, an optical disk drive, etc. The removable storagedrive 852 reads from and/or writes to a removable storage unit 854 in awell known manner. Removable storage unit 854 represents a floppy disk,magnetic tape, optical disk, etc., which is read by and written to byremovable storage drive 852. As will be appreciated, the removablestorage unit 854 includes a computer usable storage medium having storedtherein computer software and/or data.

In alternative embodiments, secondary memory 848 may include othersimilar means for allowing computer programs or other instructions to beloaded into computer system 840. Such means can include, for example, aremovable storage unit 862 and an interface 860. Examples can include aprogram cartridge and cartridge interface (such as that found in videogame devices), a removable memory chip (such as an EPROM, or PROM) andassociated socket, and other removable storage units 862 and interfaces860 which allow software and data to be transferred from the removablestorage unit 862 to computer system 840.

Computer system 1040 can also include a communications interface 864.Communications interface 864 allows software and data to be transferredbetween computer system 840 and external devices via communications path866. Examples of communications interface 864 can include a modem, anetwork interface (such as Ethernet card), a communications port, etc.Software and data transferred via communications interface 864 are inthe form of signals which can be electronic, electromagnetic, optical orother signals capable of being received by communications interface 864,via communications path 866. Note that communications interface 864provides a means by which computer system 840 can interface to a networksuch as the Internet.

The term “computer program product” is used to generally refer toremovable storage unit 854, a hard disk installed in hard disk drive850, or a carrier wave carrying software over a communication path 866(wireless link or cable) to communication interface 864. A computeruseable medium can include magnetic media, optical media, or otherrecordable media, or media that transmits a carrier wave or othersignal. These computer program products are means for providing softwareto computer system 840.

Computer programs (also called computer control logic) are stored inmain memory 846 and/or secondary memory 848. Computer programs can alsobe received via communications interface 854. Such computer programs,when executed, enable the computer system 840 to perform the features ofthe present invention as discussed herein. In particular, the computerprograms, when executed, enable the processor 844 to perform thefeatures of the present invention. Accordingly, such computer programsrepresent controllers of the computer system 840.

The present invention can be implemented as control logic in software,firmware, hardware or any combination thereof. In an embodiment wherethe invention is implemented using software, the software may be storedin a computer program product and loaded into computer system 840 usingremovable storage drive 852, hard drive 850, or interface 860.Alternatively, the computer program product may be downloaded tocomputer system 840 over communications path 866. The control logic(software), when executed by the one or more processors 844, causes theprocessor(s) 844 to perform the functions of the invention as describedherein.

In another embodiment, the invention is implemented primarily infirmware and/or hardware using, for example, hardware components such asapplication specific integrated circuits (ASICs). Implementation of ahardware state machine so as to perform the functions described hereinwill be apparent to persons skilled in the relevant art(s).

CONCLUSION

While various embodiments of the invention have been described above, itshould be understood that they have been presented by way of example,and not limitation. It will be apparent to persons skilled in therelevant art that various changes in form and detail may be made thereinwithout departing from the spirit and scope of the invention. This isespecially true in light of technology and terms within the relevantart(s) that may be later developed. Thus the invention should not belimited by any of the above-described exemplary embodiments, but shouldbe defined only in accordance with the following claims and theirequivalents.

1. A method for selecting a route for a voice over IP (VoIP) call withina communications network, comprising: (a) receiving a VoIP call requestfrom a user; (b) identifying a plurality of candidate routes toestablish the VoIP call; (c) assessing each of said candidate routesusing quality measurement packets, wherein said quality measurementpackets can be used to determine at least one route quality metric; and(d) selecting a candidate route from said plurality of candidate routes.2. The method of claim 1, further comprising establishing a voice overIP (VoIP) call over the candidate route selected in step (d).
 3. Themethod of claim 1, wherein said communication network comprises anInternet.
 4. The method of claim 1, wherein said communication networkcomprises a packet switched network and a public switched telephonenetwork.
 5. The method of claim 4, wherein selecting a candidate routeuses as a factor locations of local exchanges within a public switchedtelephone network.
 6. The method of claim 4, wherein selecting acandidate route uses as a factor whether a candidate route requires theuse of a toll call within the public switched telephone network.
 7. Themethod of claim 1, wherein said communication network comprises a framerelay network, an ATM network, an IP protocol-based network, acircuit-switched network or a combination of more than one of a framerelay network, an ATM network, an IP protocol-based network, acircuit-switched network.
 8. The method of claim 1, wherein said thecandidate route is selected on a per-call basis.
 9. The method of claim1, wherein selecting a candidate route uses as a factor the at least oneroute quality metric.
 10. The method of claim 1, wherein selecting acandidate routes uses as a factor route cost and the at least one routequality metric.
 11. The method of claim 1, further comprising receivinguser preferences related to call quality and cost factors.
 12. Themethod of claim 11, wherein selecting a candidate route uses as a factoruser preferences related to call quality and cost and costs and qualityof candidate routes.
 13. The method of claim 1, wherein said at leastone route quality metric includes latency, time jitter or lost packetinformation.
 14. The method of claim 14, further comprising ordering thecandidate routes, wherein said ordering is based on one or more ofnetwork addresses, route costs, general user preferences, route qualityof service and whether a route is static, wherein a static route is onethat is unchanging.